/**
 * 给定二叉搜索树的根结点 root，返回值位于范围 [low, high] 之间的所有结点的值的和。
 *https://leetcode.cn/problems/range-sum-of-bst/
 *利用二叉搜索树的性质
 */
class RangeSumBST {
    public int rangeSumBST(TreeNode root, int low, int high) {
        if (root == null) {
            return 0;
        }
        if (root.val > high) {//如果当前结点值大于high，往左子树找
            return rangeSumBST(root.left, low, high);
        }
        if (root.val < low) {//如果当前结点值小于low，往右子树找
            return rangeSumBST(root.right, low, high);
        }
        return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right, low, high);
    }
}

